home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / include / transform3.h < prev    next >
C/C++ Source or Header  |  1993-01-14  |  6KB  |  131 lines

  1. /* Copyright (c) 1992 The Geometry Center; University of Minnesota
  2.    1300 South Second Street;  Minneapolis, MN  55454, USA;
  3.    
  4. This file is part of geomview/OOGL. geomview/OOGL is free software;
  5. you can redistribute it and/or modify it only under the terms given in
  6. the file COPYING, which you should have received along with this file.
  7. This and other related software may be obtained via anonymous ftp from
  8. geom.umn.edu; email: software@geom.umn.edu. */
  9.  
  10. /* Authors: Charlie Gunn, Pat Hanrahan, Stuart Levy, Tamara Munzner, Mark Phillips */
  11.  
  12. #ifndef TRANSFORM3DEF
  13. #define TRANSFORM3DEF
  14.  
  15. #include "point3.h"
  16. #include "hpoint3.h"
  17. #include "hplane3.h"
  18.  
  19. typedef float Tm3Coord;
  20. typedef Tm3Coord Transform3[4][4];
  21.  
  22. /*
  23.  * Space & model flags; used to specify what space we're in, and
  24.  * a model for hyperbolic space.  The actual value may be a logical
  25.  * OR of a space and a model value.
  26.  */
  27. #define TM_HYPERBOLIC    0x0001
  28. #define TM_EUCLIDEAN    0x0002
  29. #define TM_SPHERICAL    0x0004
  30.  
  31. #define TM_SPACE(x) (x & 0x00ff)
  32. #define TM_MODEL(x) (x & 0xff00)
  33.  
  34. #define TM_VIRTUAL        0x0100
  35. #define TM_PROJECTIVE        0x0200
  36. #define TM_CONFORMAL_BALL    0x0400
  37.  
  38. #define TMNULL  ((TmCoord (*)[4])0)     /* How to pass a NULL Transform ptr */
  39.  
  40. #ifndef X
  41. #define X 0
  42. #define Y 1
  43. #define Z 2
  44. #define W 3
  45. #endif
  46.  
  47.  
  48. extern void Tm3Adjoint(/* Transform3, Transform3 */);
  49. extern float Tm3Invert(/* Transform3 T, Transform3 Tinv */);
  50. extern float Tm3Determinant(/* Transform3 T */);
  51. extern void Tm3Dual(/* Transform3 T, Transform3 Tdual */);
  52. extern void Tm3Transpose(/* Transform3 Ta, Transform3 Tb */);
  53. extern void Tm3PostConcat(/* Transform3 Ta, Transform3 Tb */);
  54. extern void Tm3PreConcat(/* Transform3 Ta, Transform3 Tb */);
  55. extern void Tm3Concat(/* Transform3 Ta, Transform3 Tb, Transform3 Tc */);
  56.  
  57. extern void Tm3Print(/* Transform3 T */);
  58. extern void Tm3Copy(/* Transform3 Tsrc, Transform3 Tdst */);
  59. extern int  Tm3Compare( /* Transform T1, Transform T2, float tol */);
  60. extern void Tm3Push(/* Transform3 T */);
  61. extern void Tm3Pop(/* Transform3 T */);
  62.  
  63. extern void Tm3Conjugate(/* Transform3 T, Transform3 Tcon, Transform3 Tres */);
  64.  
  65. extern void Tm3Identity(/* Transform3 T */);
  66.  
  67. extern void Tm3Translate(/* Transform T, TmCoord tx, TmCoord ty, TmCoord tz */);
  68. extern void Tm3TranslateOrigin(/* Transform T, HPoint *pt */);
  69.  
  70. extern void Tm3HypTranslate(/* Transform T, TmCoord tx, TmCoord ty, TmCoord tz */);
  71. extern void Tm3HypTranslateOrigin(/* Transform T, HPoint3 Ppt */);
  72.  
  73. extern void Tm3SphTranslate(/* Transform T, TmCoord tx, TmCoord ty, TmCoord tz */);
  74. extern void Tm3SphTranslateOrigin(/* Transform T, HPoint3 *pt */);
  75. extern void Tm3SpaceTranslate(/* Transform T,
  76.               TmCoord tx, TmCoord ty, TmCoord tz, int space */);
  77. extern void Tm3SpaceTranslateOrigin(/* Transform T, HPoint3 *pt, int space */);
  78.  
  79. extern void Tm3RotateX(/* Transform3 T, float angle */);
  80. extern void Tm3RotateY(/* Transform3 T, float angle */);
  81. extern void Tm3RotateZ(/* Transform3 T, float angle */);
  82. extern void Tm3Rotate(/* Transform3 T, float angle, Point *axis */);
  83. extern void Tm3CarefulRotateTowardZ(/* Transform3 T, HPoint3 *pos */);
  84. extern void Tm3RotateTowardZ(/* Transform3 T, HPoint3 *pos */);
  85. extern void Tm3AlignX(/* Transform3 T, Point *axis */);
  86. extern void Tm3AlignY(/* Transform3 T, Point *axis */);
  87. extern void Tm3AlignZ(/* Transform3 T, Point *axis */);
  88. extern void Tm3Align(/* Transform3 T, Point *axis, Point *newaxis */);
  89. extern void Tm3Scale(/* Transform3 T, float sx, float sy, float sz */);
  90. extern void Tm3Skew(/*Transform3 T, float angle, Point *axis1, Point *axis2*/);
  91. extern void Tm3Shear(/* Transform3 T, Point *pt, Plane *pl */);
  92. extern void Tm3Reflect(/* Transform3 T, Plane *pl */);
  93. extern int  Tm3Refract(/* Transform3 T, Plane *pl, float eta */);
  94. extern int  Tm3Refract2(/* Transform3 T, Plane *pl, float eta */);
  95. extern void Tm3Project(/* Transform3 T, Plane *pl, Point *pt */);
  96.  
  97. extern void Tm3Orthographic(/* Transform3 T,
  98.     float l, float r, float b, float t, float n, float f */);
  99. extern void Tm3Perspective(/* Transform T,
  100.     float l, float r, float b, float t, float n, float f */);
  101. extern void Tm3Window(/* Transform3 T, float l, float r, float b, float t */);
  102.  
  103. extern void Ctm3Translate(/* Transform3 T, float tx, float ty, float tz */);
  104. extern void Ctm3RotateX(/* Transform3 T, float angle */);
  105. extern void Ctm3RotateY(/* Transform3 T, float angle */);
  106. extern void Ctm3RotateZ(/* Transform3 T, float angle */);
  107. extern void Ctm3Rotate(/* Transform3 T, float angle, Point *axis */);
  108. extern void Ctm3AlignX(/* Transform3 T, Point *axis */);
  109. extern void Ctm3AlignY(/* Transform3 T, Point *axis */);
  110. extern void Ctm3AlignZ(/* Transform3 T, Point *axis */);
  111. extern void Ctm3Align(/* Transform3 T, Point *axis, Point *newaxis */);
  112. extern void Ctm3Scale(/* Transform3 T, float sx, float sy, float sz */);
  113. extern void Ctm3Skew(/*Transform3 T, float angle, Point *axis1, Point *axis2*/);
  114. extern void Ctm3Shear(/* Transform3 T, Point *pt, Plane *pl */);
  115. extern void Ctm3Reflect(/* Transform3 T, Plane *pl */);
  116. extern int  Ctm3Refract(/* Transform3 T, Plane *pl, float eta */);
  117. extern int  Ctm3Refract2(/* Transform3 T, Plane *pl, float eta */);
  118. extern void Ctm3Project(/* Transform3 T, Plane *pl, Point *pt */);
  119.  
  120. extern void Ctm3Orthographic(/* Transform3 T,
  121.     float l, float r, float b, float t, float n, float f */);
  122. extern void Ctm3Perspective(/* Transform T,
  123.     float l, float r, float b, float t, float n, float f */);
  124. extern void Ctm3Window(/* Transform3 T, float l, float r, float b, float t */);
  125.  
  126. extern HPoint3 TM3_XAXIS;
  127. extern HPoint3 TM3_YAXIS;
  128. extern HPoint3 TM3_ZAXIS;
  129. extern Transform3 TM3_IDENTITY;
  130. # endif
  131.